import { UploadFile } from 'antd/es/upload/interface';

// 表单项配置类型
export interface FormItemConfig {
  name: string; // 表单项名称
  key: string; // 表单项的键
  required?: boolean; // 是否必填
  disabled?: boolean; // 是否禁用

  component: string; // 表单项类型
  items?: { label: string; value: string | number;children?:[]}[]; // 下拉框或级联选择的选项
  span?: number; // 表单项所占的列宽（默认 24，即一行一列）
}

// 表单数据类型
export interface FormData {
  [key: string]: string | number | UploadFile[]; // 表单数据可能是字符串、数字或上传文件
}

// 组件属性类型
export interface DynamicFormModalProps {
  visible: boolean; // 是否显示弹窗
  modalWidth: number; // 弹窗宽度
  title: string; // 弹窗标题
  formData: FormData; // 需要回显的表单数据
  onCancel: () => void; // 取消回调
  formConfig: FormItemConfig[]; // 表单配置项
  onSave: (values: FormData) => void; // 保存回调
  onChange: (changedValues: FormData, allValues: FormData) => void; // 表单变化回调
}